
/**
 * Project Name:cats-core
 * File Name:ResourceService.java
 * Package Name:com.catsic.core.resource.service
 * Date:2014年3月24日下午3:31:59
 * Copyright (c) 2014, oa.catsic.com All Rights Reserved.
 */
 
package com.catsic.core.resource.service;

import java.util.List;

import com.catsic.base.BaseService;
import com.catsic.base.tree.TreeInfo;
import com.catsic.core.entity.Resource;
import com.catsic.core.form.ResourceForm;


/**
 * ClassName: ResourceService
 * Description: 资源Service
 * date: 2014年3月24日 下午3:31:59
 * author: yangyd
 */
public interface ResourceService extends BaseService<Resource, String> {
	
	/**
	 * add:添加资源
	 * @author yangyd
	 * @param  form
	 * @return ResourceForm
	 */ 
	public ResourceForm add(ResourceForm form);
	
	/**
	 * update:更新资源
	 * @author yangyd
	 * @param  form
	 * @return ResourceForm
	 */ 
	public ResourceForm update(ResourceForm form);
	
	/**
	 * findById:通过ID获得资源
	 * @author yangyd
	 * @param id
	 * @return
	 */
	public Resource findById(String id);
	
	/**
	 * 注销
	 * @param id
	 * @return
	 */
	public void cancel(String id);
	
	/**
	 * 删除节点
	 * @param id
	 * @return
	 */
	public void delete(String id);
	
	/**
	 * 激活节点
	 * @param id
	 * @return
	 */
	public void active(String id);
	
	/**
	 * findByName:通过名称获得资源列表.
	 * @author yangyd
	 * @param name
	 * @return
	 */
	public List<Resource> findByName(String name);
	
	/**
	 * findByName:通过Code获得资源列表.
	 * @author yangyd
	 * @param name
	 * @return
	 */
	public Resource findByCode(String code);
	
	/**
	 * findByLikeCode:通过Code获得资源列表.
	 * @author yangyd
	 * @param code
	 * @return
	 */
	public List<Resource> findByLikeCode(String code);
	
	/**
	 * findByUserIdOrderByCodeAsc:通过用户Id查询机构对应的资源
	 * @author yangyd
	 * @param id
	 * @return
	 */
	public List<Resource> findByUserIdOrderByCodeAsc(String id);
	
	/**
	 * findByMenuCode:通过菜单CODE获取行为列表
	 * @author yangyd
	 * @param 父节点id
	 * @return
	 */
	public List<Resource> findByMenuCode(String menuCode);
		
	/**
	 * getTreeInfo:通过用户Id查询机构对应的资源
	 * @author yangyd
	 * @param id
	 * @return
	 */
	public List<TreeInfo> getTreeInfo(String id);
	
	/**
	 * 通过父ID取得子节点
	 * @param 
	 */
	public List<ResourceForm> query(String id);
	
	/**
	 * 通过userId获取行为,具体说明参照/common/resource.js
	 * @param userId 用户ID
	 * @param menuCode 菜单编码
	 * @param drawerCode 行为类型
	 * @param authAreaCode 授权分类编码
	 * @return
	 */
	public List<ResourceForm> findResourcesByUserId(String userId, String menuCode, String drawerCode,String authAreaCode);
}
